home *** CD-ROM | disk | FTP | other *** search
/ SGI Varsity Update 1998 August / SGI Varsity Update 1998 August.iso / relnotes / WorkShop / ch3.z / ch3
Text File  |  1998-07-29  |  48KB  |  1,189 lines

  1.  
  2.  
  3.  
  4.                                   - 1 -
  5.  
  6.  
  7.  
  8.        3.  _C_h_a_n_g_e_s__a_n_d__A_d_d_i_t_i_o_n_s
  9.  
  10.        These are the changes from WorkShop 2.6.5:
  11.  
  12.        3.1  _N_e_w__F_e_a_t_u_r_e_s__i_n__W_o_r_k_S_h_o_p__2_._7
  13.  
  14.           +o 6666....5555 PPPPtttthhhhrrrreeeeaaaaddddssss::::
  15.  
  16.             IIIInnnnttttrrrroooodddduuuuccccttttiiiioooonnnn::::
  17.  
  18.             The new implementation of 6.5 pthreads introduces a new
  19.             Multiprocess View (cvmp).  It is recommended that users
  20.             debugging pthreads use the cvmp window in conjunction
  21.             with the Main Window (cvmain).   The Multiprocess View
  22.             can be initiated using the
  23.  
  24.             cvmain->Admin->Multiprocess View menu.
  25.  
  26.             Ada customers should still use the TaskView window
  27.             (cvmain->View->Task View) to debug Ada threads.
  28.  
  29.             MMMMuuuullllttttiiiipppprrrroooocccceeeessssssss VVVViiiieeeewwww::::
  30.  
  31.             The cvmp window now supports a hierarchical view of
  32.             your pthreaded application.  There are 'folder' icons
  33.             that can be selected to get more information about a
  34.             process or thread.   For pthreaded applications,
  35.             selecting the folder for the process expands to a view
  36.             of that process's pthreads.   Selecting a thread then
  37.             opens a call stack for that thread.
  38.  
  39.             Using cvmp with Fork/exec and sproc programs still
  40.             behave as they did for the 2.6.5 version of cvd.   You
  41.             do, however, gain additional functionality:
  42.  
  43.               o You can now select on a stopped process to see its
  44.             call stack.
  45.  
  46.               o You can switch the focused process rather than
  47.             bring up a new
  48.                 cvmain for each process in which you're interested.
  49.  
  50.             GGGGrrrraaaapppphhhhiiiiccccaaaallll UUUUsssseeeerrrr IIIInnnntttteeeerrrrffffaaaacccceeee cccchhhhaaaannnnggggeeeessss::::
  51.  
  52.             For each process or thread, the right mouse buttons
  53.             brings up a menu that is applicable to the selected
  54.             item.  (This menu is duplicated in the 'Process' menu
  55.             item.)
  56.  
  57.               The new menu contains these selections:
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                                   - 2 -
  71.  
  72.  
  73.  
  74.               cvmp->Process->
  75.  
  76.               - "Change focus to this entry"
  77.                   This allows the user to switch the process/thread
  78.             that is currently
  79.                   focused in the cvmain window to the cvmp selected
  80.             process/thread.
  81.                   - Selecting on a process changes cvmain's focus
  82.             to that process.
  83.                   - Selecting on a thread changes cvmain's focus to
  84.             that thread.
  85.                   - Selecting on a call stack entry changes
  86.             cvmain's focus to that
  87.                     process/thread.   And positions you at the
  88.             selected call stack's
  89.                     offset.
  90.  
  91.               - "Create a new window..."
  92.                   This brings up a new cvmain window on the
  93.             selected process/thread
  94.  
  95.               - "Goto ..."
  96.                   This changes the focus to a user entered thread.
  97.             That is, a dialog
  98.                   box is shown and the user can enter the thread to
  99.             switch focus to.
  100.                   This is useful when multiple threads (all at the
  101.             same location) are
  102.                   collapsed onto one line.   The 'Change focus to
  103.             this entry' takes you
  104.                   to the first thread, but the 'Goto ...' can jump
  105.             you to any thread.
  106.  
  107.               - "Add ..."
  108.                   This, as in 2.6.5, allows you to add new
  109.             processes to the cvmp
  110.                   window's group.   The dialog interface to this
  111.             has change to be
  112.                   a bit more user friendly.   You now get a list of
  113.             process to select.
  114.  
  115.               - "Remove"
  116.                   This is the same as 2.6.5.
  117.  
  118.             The Config->Preferences dialog has also be expanded.
  119.             3 new fields have been added.
  120.  
  121.               - Stack Depth:
  122.                   This allows the user to set how many lines of the
  123.             call stack should be
  124.                   shown when opening the call stack.
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                                   - 3 -
  137.  
  138.  
  139.  
  140.               - Levels to open:
  141.                   By default only the top-level of the hierarchy is
  142.             displayed.   Changing
  143.                   this value will automatically open the hierarchy
  144.             to the number of levels
  145.                   specified.
  146.  
  147.               - Combine threads at same location
  148.                   This applies a collapsing algorithm to display
  149.             threads stopped at the
  150.                   same location on the same line.  (NOTE:  Threads
  151.             can get to the same
  152.                   location via different logic routes.   The cvmp
  153.             window currently does
  154.                   not distinguish this scenario.)
  155.  
  156.           +o Support for setting breakpoints in codes that use C++
  157.             templates will now set a breakpoint at each of the
  158.             template instantiations.
  159.  
  160.           +o Support for pending traps has been added to WorkShop
  161.             2.7.  When pending traps are enabled, WorkShop allows
  162.             the placing of breakpoints on names that do not yet
  163.             exist.  This is useful for setting events in DSOs that
  164.             have not yet been loaded by a dlopen().  Since WorkShop
  165.             does not know if a pending trap will ever be satisfied,
  166.             breakpoints on names that are misspelled will not be
  167.             flagged as errors when pending traps are enabled.
  168.  
  169.             Pending traps may be enabled by adding the following to
  170.             the users .Xdefaults file:
  171.  
  172.             *AllowPendingTraps: true
  173.  
  174.             The default is false.
  175.  
  176.           +o SpeedShop is now used for performance data collection
  177.             (thus, the data collection will be less intrusive and
  178.             more scalable). Users are able to use either ssrun
  179.             (with a special option) or cvmain to specify and run
  180.             performance experiments. The format of the performance
  181.             experiments has now changed and cvperf is able to read
  182.             both the old and the new format (although there's no
  183.             longer a way to generate experiments in the old
  184.             format). The "select task" menu under cvmain has
  185.             completely changed to describe the SpeedShop
  186.             experiments. The "config" menu under cvmain has also
  187.             completely changed to incorporate all the options and
  188.             flexibility allowed by SpeedShop. There is not a 1-1
  189.             mapping from the old WorkShop experiment semantics to
  190.             the new ones, but the following gives a mapping.
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                   - 4 -
  203.  
  204.  
  205.  
  206.             1.  Determine bottlenecks, identify phases <=> call
  207.             stack sampling +
  208.                 + usage data at 1 sec intervals
  209.  
  210.             2.  Get total time per function & source line <=> call
  211.             stack sampling
  212.  
  213.             3.  Get CPU time per function & source line <=> pc-
  214.             sampling + ideal
  215.                 (specified via the custom experiment specification
  216.             panel)
  217.  
  218.             4.  Get ideal time (pixie) per function & source line
  219.             <=> ideal
  220.  
  221.             5.  Trace I/O activity <=> io tracing
  222.  
  223.             6.  Trace system calls <=> N/A
  224.  
  225.             7.  Trace page faults <=> N/A
  226.  
  227.             8.  Find memory leaks <=> heap tracing (and no need to
  228.             link against libmalloc*)
  229.  
  230.             9.  Find floating point exceptions <=> fpe tracing (and
  231.             no need to link against libfpe*)
  232.  
  233.             10.  Get PC sampling times <=> pc-sampling
  234.  
  235.           +o There is a new experiment viewer window that cvperf
  236.             supports to allow browsing of the recorded experiments
  237.             in a given directory and to enable the selection of the
  238.             experiment files to be analyzed.
  239.  
  240.           +o HW counter experiments are now supported in WorkShop
  241.             2.7.
  242.  
  243.           +o Tool performance for cvperf with respect to running
  244.             time and memory footprint has greatly improved.
  245.  
  246.           +o Support perf data aggregation across processes.
  247.  
  248.  
  249.  
  250.        3.2  _F_e_a_t_u_r_e_s__a_d_d_e_d__i_n__P_r_i_o_r__R_e_l_e_a_s_e_s
  251.  
  252.        These are the changes from WorkShop 2.6.4:
  253.  
  254.           +o Compiler based "new" expression evaluator for n32 C++.
  255.             This gives calls to virtual functions, member
  256.             references without needing "this->" and other C++
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                                   - 5 -
  269.  
  270.  
  271.  
  272.             features.
  273.  
  274.           +o Support for -n32 "-gslim" compilations, which reduce
  275.             the size of the symbolic debug information for C++
  276.             programs.
  277.  
  278.           +o WorkShop now supports the debugging of applications
  279.             that use pthreads.  The changes are the addition of the
  280.             "showthread" command and the addition of an optional
  281.             "thread" argument to the "where" command.
  282.  
  283.             In order to debug pthreads programs, WorkShop's default
  284.             breakpoint behavior should be set in one of the
  285.             following two ways.   The first is to set the "adaMode"
  286.             resource in your .Xdefaults file. This can be done with
  287.             the following line:
  288.  
  289.               *adaMode:       True
  290.  
  291.             This sets the source view mode to control all running
  292.             processes in the share group and sets the Group Trap
  293.             and Stop All toggles in the Traps pulldown.
  294.  
  295.             The second way to change the breakpoint behavior is to
  296.             do the following:  First, use the rightmouse over the
  297.             Run, Continue or Stop buttons (whichever is active) to
  298.             invoke the Process Control Mode popup and make the "All
  299.             Processes" selection. Next, invoke the Traps pulldown
  300.             and set the Group Trap default and the Stop All trap
  301.             default.
  302.  
  303.             The showthread command provides status information
  304.             about the threads in your program.  IIIInnnn oooonnnneeee sssseeeessssssssiiiioooonnnn,,,, yyyyoooouuuu
  305.             ccccaaaannnnnnnnooootttt ddddeeeebbbbuuuugggg mmmmoooorrrreeee tttthhhhaaaannnn oooonnnneeee pppprrrrooooggggrrrraaaammmm tttthhhhaaaatttt uuuusssseeeessss tttthhhhrrrreeeeaaaaddddssss....
  306.  
  307.             The syntax of the "showthread" command is:
  308.  
  309.               showthread [full]
  310.  
  311.               showthread [full] [thread] {number | all}
  312.  
  313.             The first form prints brief status information about
  314.             the current thread. If the full qualifier is included,
  315.             prints full status information.
  316.  
  317.             The second form prints brief status information about
  318.             the thread identified by number or all threads
  319.             associated with the debug session. If the full
  320.             qualifier is included, prints full status information.
  321.             The thread qualifier does not affect the output.
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                                   - 6 -
  335.  
  336.  
  337.  
  338.             The "where" command has been extended so that thread
  339.             callstacks can be printed:
  340.  
  341.               where [thread thread-id]
  342.  
  343.             A thread's id is obtained from the first column of the
  344.             output of the "showthread" command.
  345.  
  346.           +o WorkShop now provides a form of breakpoint that fires
  347.             when a C++ exception is raised.  The "stop exception"
  348.             command is used to set such a breakpoint.
  349.  
  350.             You can add a conditional expression to an exception
  351.             breakpoint by using the trap manager window.  HHHHoooowwwweeeevvvveeeerrrr,,,,
  352.             tttthhhheeee ccccoooonnnntttteeeexxxxtttt iiiinnnn wwwwhhhhiiiicccchhhh tttthhhheeee eeeexxxxpppprrrreeeessssssssiiiioooonnnn iiiissss eeeevvvvaaaalllluuuuaaaatttteeeedddd iiiissss nnnnooootttt
  353.             tttthhhhaaaatttt ooooffff tttthhhheeee tttthhhhrrrroooowwww;;;; tttthhhheeee ccccoooonnnntttteeeexxxxtttt iiiissss tttthhhheeee eeeexxxxcccceeeeppppttttiiiioooonnnn
  354.             hhhhaaaannnnddddlllliiiinnnngggg ccccooooddddeeee ooooffff tttthhhheeee CCCC++++++++ rrrruuuunnnnttttiiiimmmmeeee lllliiiibbbbrrrraaaarrrryyyy.... HHHHeeeennnncccceeee,,,, oooonnnnllllyyyy
  355.             gggglllloooobbbbaaaallll vvvvaaaarrrriiiiaaaabbbblllleeeessss hhhhaaaavvvveeee uuuunnnnaaaammmmbbbbiiiigggguuuuoooouuuussss iiiinnnntttteeeerrrrpppprrrreeeettttaaaattttiiiioooonnnn iiiinnnn tttthhhheeee
  356.             iiiiffff ccccllllaaaauuuusssseeee....
  357.  
  358.             The syntax for setting an exception breakpoint is:
  359.  
  360.               stop exception {all | item}
  361.  
  362.               stop exception unexpected {[all] | [item [, item] ]}
  363.  
  364.             The first form stops on all C++ exceptions, or
  365.             exceptions that throw the base type item.
  366.  
  367.             The second form stops on all C++ exceptions that have
  368.             either no handler or are caught by an "unexpected"
  369.             handler.  If you specify item, stops on exceptions that
  370.             throw the base type item.
  371.  
  372.             Do not include complex expressions involving operators
  373.             such as * and & in your type specification for an
  374.             exception breakpoint. Note, however, that if you create
  375.             an exception breakpoint with a specific base type, you
  376.             will also stop your program on throws of pointer,
  377.             reference, const and volatile types. For example:
  378.  
  379.               (cvd) stop exception char
  380.  
  381.             Your program will stop on throws of type char, char *,
  382.             char&, const char&, volatile char*, and so forth.
  383.  
  384.             In WorkShop 2.6, the Static Analyzer can analyze
  385.             Fortran 90 source code in its accurate parser mode.
  386.             Fortran 90 sources can also be analyzed in the Static
  387.             Anayzer's less-accurate scanner mode.
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                                   - 7 -
  401.  
  402.  
  403.  
  404.             RRRReeeeqqqquuuuiiiirrrreeeemmmmeeeennnnttttssss: to use the Static Analyzer on Fortran 90,
  405.             you must have the Fortran 90 compiler installed.
  406.  
  407.        3.2.1  _C_h_a_n_g_e_s__i_n__t_h_e__I_n_t_e_r_f_a_c_e
  408.  
  409.           +o The "Host" text field has been removed.
  410.  
  411.           +o The "Data" menu has been removed and replaced with the
  412.             pop-up expression evaluator.  Pop-up expression
  413.             evaluation is activated by right-clicking in the source
  414.             area in MainView and selecting either "Click to
  415.             Evaluate" or "Auto Evaluate" in the pop-up menu.
  416.             "Click to Evaluate" means that when the process is
  417.             stopped, if you left-click on a symbol the current
  418.             value of that symbol will be displayed in a small pop-
  419.             up window near the source.  "Auto Evaluate" means that
  420.             you don't have to click on a symbol to see its value,
  421.             simply move the mouse over the symbol and hesitate; the
  422.             value will appear as though the mouse had been clicked.
  423.             Selecting an expression in either mode will cause it to
  424.             be evaluated.  You can get rid of the pop-up value by
  425.             moving the mouse out of the source area or by touching
  426.             the pop-up value with the mouse cursor.
  427.  
  428.           +o The "Performance Panel" under the "Admin" menu has been
  429.             removed and replaced with the "Perf" menu on the top-
  430.             level menubar.  There are three entries under this
  431.             menu: "Select Task" allows you to specify what
  432.             performance data to gather, "Examine Results" allows
  433.             you to launch the Performance Analyzer, and "Configs"
  434.             brings up the configuration dialog specifying control
  435.             information that you typically shouldn't have to
  436.             change.  The option menu just above the "Run" button
  437.             tells you when you are in debug, performance, or purify
  438.             mode and allows you to turn those modes on and off.
  439.             (Purify mode is only available if Purify from Pure
  440.             Software is installed on your system.)
  441.  
  442.           +o When a performance experiment is finished, cvperf is
  443.             normally started immediately.  This feature may be
  444.             disabled using a toggle in the "Configs..." dialog.
  445.  
  446.           +o When recording performance experiments, a new option
  447.             allows you to follow _f_o_r_k'd processes or not; by
  448.             default, experiments will follow.
  449.  
  450.           +o The source view in the debugger will be shared with a
  451.             Performance Analyzer, and performance annotations will
  452.             appear in it.  Similarly, it will be shared with
  453.             WorkShop Pro MPF, and loop annotations will appear.
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                                   - 8 -
  467.  
  468.  
  469.  
  470.        3.2.2  _G_e_n_e_r_a_l__C_h_a_n_g_e_s__s_i_n_c_e__2_._4  WorkShop now supports
  471.        debugging and analyzing 64-bit executables built using
  472.        either the MIPS3 or MIPS4 ABI (application binary interface)
  473.        protocols (that is, programs that were built with the -mips3
  474.        or -mips4 flags) in addition to 32-bit executables. The
  475.        ability to support 64-bit executables has three general
  476.        consequences:
  477.  
  478.           +o Any WorkShop view that can display addresses (pointers)
  479.             can display the 64-bit addresses.
  480.  
  481.           +o Any WorkShop view that can display registers shows the
  482.             new configurations of registers and precisions
  483.             available in MIPS3 and MIPS4.  The details are
  484.             discussed in the WorkShop Debugger changes section.
  485.  
  486.           +o Any WorkShop view that displays disassembled source
  487.             code displays the 64-bit instruction set as well as the
  488.             64-bit addresses.
  489.  
  490.           +o WorkShop user authentication has been changed to
  491.             conform to the .rhosts-based model used by rcp and rsh.
  492.             This could break some remote debugging scenarios.  See
  493.             the _c_v_c_o_n_n_e_c_t(1m) and _r_h_o_s_t_s(4) man pages for further
  494.             details.
  495.  
  496.           +o The _W_o_r_k_S_h_o_p _O_v_e_r_v_i_e_w book was added.  This purpose of
  497.             this book is to provide a comprehensive overview of the
  498.             WorkShop features and to provide pointers of where to
  499.             look in the manuals for help.
  500.  
  501.  
  502.        3.2.3  _C_h_a_n_g_e_s__i_n__t_h_e__D_e_b_u_g_g_e_r
  503.  
  504.           +o Signals are trapped differently by recent versions of
  505.             _c_v_d (versions 2.4 and later) than by earlier versions.
  506.             If a signal is received that may lead to termination of
  507.             the process, earlier versions of _c_v_d would always trap
  508.             the signal.  (See _s_i_g_n_a_l(5) for the list of signals
  509.             that may lead to process termination).
  510.  
  511.             In newer versions of WorkShop, _c_v_d's default behavior
  512.             is to trap such a signal only if the process has not
  513.             registered a handler for the signal.  For example, if
  514.             the action on SIGSEGV is SIG_DFL and the process
  515.             receives a SIGSEGV, _c_v_d will stop the process.  On the
  516.             other hand, if the action on SIGSEGV is a handler
  517.             function and the process receives a SIGSEGV, _c_v_d will
  518.             not stop the process and SIGSEGV will be delivered to
  519.             the process.
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                                   - 9 -
  533.  
  534.  
  535.  
  536.             _c_v_d's default treatment of such signals can be
  537.             overridden.  The user can choose for a trap on a signal
  538.             either to stop the process whenever the signal is
  539.             received, or to stop the process only when there is no
  540.             handler registered for the signal.  The command _c_a_t_c_h
  541.             <_s_i_g_n_a_l> will cause _c_v_d to always stop the process when
  542.             <signal> is received.  The command _c_a_t_c_h _u_n_h_a_n_d_l_e_d
  543.             <_s_i_g_n_a_l> will cause _c_v_d to stop the process when
  544.             <signal> is received only if there is no handler
  545.             registered for <signal>.  The command _c_a_t_c_h will show
  546.             which signals are being trapped by _c_v_d; the signals
  547.             that are only trapped when there is no registered
  548.             handler are displayed as <signal> (when unhandled).
  549.  
  550.             Those users who prefer to have _c_v_d unconditionally trap
  551.             signals that may cause process termination may create a
  552.             ._c_v_d_r_c file in the their home directory and include the
  553.             following lines.  This will cause versions 2.4 and
  554.             later of _c_v_d to behave just as earlier versions with
  555.             regard to the default trapping of signals.
  556.  
  557.               catch SIGINT
  558.               catch SIGQUIT
  559.               catch SIGILL
  560.               catch SIGTRAP
  561.               catch SIGABRT
  562.               catch SIGEMT
  563.               catch SIGFPE
  564.               catch SIGBUS
  565.               catch SIGSEGV
  566.               catch SIGSYS
  567.               catch SIGPIPE
  568.               catch SIGALRM
  569.               catch SIGTERM
  570.               catch SIGUSR1
  571.               catch SIGUSR2
  572.               catch SIGPOLL
  573.               catch SIGVTALRM
  574.               catch SIGPROF
  575.               catch SIGXCPU
  576.               catch SIGXFSZ
  577.  
  578.           +o The debugger's "Remap Paths" feature can now be used to
  579.             map in source files whose name conflicts with a file in
  580.             the current working directory.  As a result of this
  581.             change, if you have sources compiled "-g" in other
  582.             directories, and similarly-named sources in ".", you
  583.             will not get the "." ones automatically.  This is a
  584.             change from prior versions of WorkShop, where the
  585.             sources in "." were used unconditionally.  To force the
  586.             debugger to use the sources in "." in these
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.                                   - 10 -
  599.  
  600.  
  601.  
  602.             circumstances, use Path Remapping to remap the path
  603.             named in the "File not in executable" dialog to "."
  604.  
  605.           +o The Debugger lets you switch back and forth between
  606.             sessions debugging 32-bit and 64-bit executables.
  607.  
  608.           +o In Main View, the PC address displays as a 64-bit
  609.             address for MIPS3 and MIPS4 executables. The PC address
  610.             appears in the _S_t_a_t_u_s field at the top of the window
  611.             and in the Debugger command line at the bottom of the
  612.             window.
  613.  
  614.           +o The _R_e_s_u_l_t column in Expression View displays 64-bit
  615.             addresses for MIPS3 and MIPS4 executables when you
  616.             select the "Address Of" menu item in the Format menu.
  617.  
  618.           +o The _R_e_s_u_l_t column in Variable Browser displays 64-bit
  619.             addresses for MIPS3 and MIPS4 executables when you
  620.             select the "Address Of" menu item in the Format menu.
  621.  
  622.           +o The _A_d_d_r_e_s_s field and address column display in Memory
  623.             View displays 64-bit addresses for MIPS3 and MIPS4
  624.             executables.
  625.  
  626.           +o The source display area in Disassembly View now
  627.             displays the 64-bit instruction set and the 64-bit
  628.             addresses for MIPS3 and MIPS4. The address fields in
  629.             the "Address..." and "Function..." dialog boxes
  630.             accessed from the Disassemble menu can accommodate 64-
  631.             bit addresses for MIPS3 and MIPS4 executables.
  632.  
  633.           +o Register View has changed the most radically of any of
  634.             the Debugger views. Here's a comparison of Register
  635.             View running a MIPS1 executable versus a MIPS4
  636.             executable:
  637.  
  638.                - Register View has 32 32-bit general purpose
  639.                  registers for MIPS1 executables and 32 64-bit
  640.                  general purpose registers for MIPS4.
  641.  
  642.                - Register View has five 32-bit special purpose
  643.                  registers for MIPS1. For MIPS4 executables, there
  644.                  are four 64-bit special registers and one 32-bit
  645.                  register (_f_p_s_c_r).
  646.  
  647.                - Register View has 16 32-bit floating point
  648.                  registers for MIPS1 executables and 32 32-bit
  649.                  floating point registers for MIPS4.
  650.  
  651.                - Register View has 16 64-bit double-precision
  652.                  registers for MIPS1 executables and 32 64-bit
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                                   - 11 -
  665.  
  666.  
  667.  
  668.                  double-precision registers for MIPS4.
  669.  
  670.             The _p_r_i_n_t_r_e_g_s command on the Debugger command line will
  671.             print out the register values for the MIPS1 and MIPS4
  672.             ABIs as well.
  673.  
  674.           +o The following assignment operators for C expressions
  675.             are now supported in Expression View and the Expression
  676.             Evaluator dialog box:
  677.                     =    +=    -=    /=    %=    >>=    <<=    &=
  678.             ^=    |=
  679.  
  680.             These should be used with caution to avoid
  681.             inadvertently modifying a variable while stepping
  682.             through a program. the name of the .Counts file as an
  683.             argument.
  684.  
  685.        3.2.4  _C_h_a_n_g_e_s__i_n__P_e_r_f__T_o_o_l_s
  686.  
  687.           +o The performance tools now work on both 32- and 64-bit
  688.             non-shared executables with two exceptions:
  689.  
  690.                - You cannot perform malloc/free tracing on non-
  691.                  shared executables. The _l_i_b_e_x_c._a library is not
  692.                  available.
  693.  
  694.                - A new view, the Butterfly View, is available.  It
  695.                  is a textual alternative to the Callgraph View
  696.                  that shows the current selected node in the
  697.                  center, with scrolled lists of callers (parents)
  698.                  above it, and callees (children) below it.  It has
  699.                  the following features:
  700.  
  701.                     - Each entry in the list shows the same
  702.                       information shown in the main function list,
  703.                       along with an attribution percentage of
  704.                       whichever data item the main function list is
  705.                       sorted by.  For the selected function itself,
  706.                       the attribution percentage is the percentage
  707.                       of the function's Inclusive <whatever> that
  708.                       comes from the function's Exclusive
  709.                       <whatever>, and the attribution percentage of
  710.                       the children represent the percentage of the
  711.                       Inclusive <whatever> of the selected node
  712.                       that came from that child.  For the parents,
  713.                       the attribution percentage is that percentage
  714.                       of the selected function's inclusive
  715.                       <whatever> that is attributed to the
  716.                       particular parent function.  Note that for
  717.                       some sort orders, (e.g., address, alphabetic,
  718.                       calls, instruction counts, ...) there either
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                                   - 12 -
  731.  
  732.  
  733.  
  734.                       is no corresponding data to propagate along
  735.                       the arcs, or we do not keep the data, because
  736.                       it takes too much memory; for those data
  737.                       types, the attribution percentages are all
  738.                       shown as "-".  Attribution percentages shown
  739.                       as "0. %" mean a true zero, while those shown
  740.                       as "0.0%" mean a value > 0, but < 0.1%.
  741.  
  742.                     - A single click on any line in the parent or
  743.                       child lists will select the node
  744.                       corresponding to that line, and refill the
  745.                       view with data based on the new selected
  746.                       function.  Similarly, a single click in the
  747.                       main function list, or any node in the graph
  748.                       will refill the Butterfly View.
  749.  
  750.                     - There are two controls on the "Config" menu
  751.                       of the butterfly view.  "Show Zero Arcs"
  752.                       determines whether or not zero-arcs, that is
  753.                       arcs that were never traversed, are shown.
  754.                       Zero arcs will have their attribution
  755.                       percentages shown as "0. %".  "Show All Arcs
  756.                       Individually" determines whether a single arc
  757.                       is shown between two nodes, with the data
  758.                       summed across all callsites from the parent
  759.                       to the child, or whether each individual arc
  760.                       (callsite) is shown.  If it is selected, the
  761.                       function name of each child has a PC value
  762.                       appended to it corresponding to the address
  763.                       of the individual call to that child function
  764.                       from the selected function; likewise, the
  765.                       parent name has the address of its call to
  766.                       the selected function appended.  (The PC
  767.                       address is shown rather than the line number
  768.                       because it is very expensive to look up the
  769.                       linenumber for each call site.  You can see
  770.                       which call site is which by invoking the
  771.                       source for the appropriate function.)
  772.  
  773.                     - The source of the selected function can be
  774.                       invoked by the "Source" button just above the
  775.                       line for the selected function.  There is no
  776.                       control that directly allows invocation of
  777.                       source from a line in either the parent or
  778.                       the child list.
  779.  
  780.                - Performance experiments on executables that
  781.                  dynamically link many DSOs can be expensive,
  782.                  because we currently record a sample at every
  783.                  invocation of _d_l_o_p_e_n.  We believe it is preferable
  784.                  to not take a sample at all such calls, but have
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.                                   - 13 -
  797.  
  798.  
  799.  
  800.                  not tested it sufficiently to make it the default.
  801.                  To record experiments without such samples, you
  802.                  need to set:
  803.                       _c_v_m_o_n*_n_o_S_a_m_p_l_e_O_n_D_l_o_p_e_n to TRUE in your
  804.                       ._X_d_e_f_a_u_l_t_s file.
  805.  
  806.                - A new graph pushbutton, _S_h_o_w _I_m_p_o_r_t_a_n_t _P_a_r_e_n_t_s, is
  807.                  available.  It will show those callers of a given
  808.                  function where usage exceeds a threshold.
  809.  
  810.                - The Performance Analyzer now can show information
  811.                  about working sets for instructions for Ideal-time
  812.                  experiments.  The new Working Set View will show a
  813.                  list of the program and its DSOs in the program,
  814.                  and, for a selected DSO, show the page layout and
  815.                  utilization.
  816.  
  817.                - A new tool, _c_v_c_o_r_d, the Cord Analyzer is available
  818.                  for producing cord feedback files to optimize
  819.                  instruction working sets for programs.  It takes
  820.                  working set information from one or more
  821.                  experiments and/or different caliper settings, and
  822.                  computes an optimized layout to improve working
  823.                  set behavior.  Although the tool works on both 32-
  824.                  and 64-bit programs, at this time _c_o_r_d itself only
  825.                  works on 32-bit executables and DSOs.  See the
  826.                  _c_v_c_o_r_d man page for further information.
  827.  
  828.                - The Performance Analyzer can now obtain
  829.                  performance data equivalent to _p_i_x_i_e and _p_i_x_s_t_a_t_s.
  830.                  This lets you see metrics based on the time that
  831.                  instructions were available for processing but
  832.                  could not be completed for some reason, such as
  833.                  branch, function unit, or operand delays.
  834.  
  835.                  To capture _p_i_x_i_e data, you select the task "Get
  836.                  Ideal Time (pixie) per function & source line"
  837.                  from the Task menu in the Performance Panel. (This
  838.                  task was formerly called "Get Ideal Time per
  839.                  function & source line".) The new version of the
  840.                  task enables you to show the following types of
  841.                  performance data in your experiments:
  842.  
  843.                     - Inclusive percentage time - the percentage of
  844.                       time that instructions in this function (and
  845.                       any called functions) were available for
  846.                       processing but could not be processed.
  847.  
  848.                     - Exclusive percentage time - the percentage of
  849.                       time that instructions in this function
  850.                       (excluding any calls) were available for
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.                                   - 14 -
  863.  
  864.  
  865.  
  866.                       processing but could not be processed.
  867.  
  868.                     - Inclusive cycles - the number of elapsed
  869.                       cycles in this function, line of code, or
  870.                       instruction (including any calls).
  871.  
  872.                     - Exclusive cycles - the number of elapsed
  873.                       cycles in this function, line of code, or
  874.                       instruction (excluding any calls).
  875.  
  876.                     - Instruction coverage - the percentage of the
  877.                       instructions within each function that were
  878.                       actually executed. In the disassembled
  879.                       source, branch-taken counts are displayed.
  880.                       Branch-taken counts show the number of times
  881.                       that each conditional branch was taken.
  882.  
  883.                     - Pixstats/Cycles-per instruction - the ratio
  884.                       of cycles to instructions. In a classic RISC
  885.                       machine, the Pixstats/Cycles-per instruction
  886.                       ratio would be 1.0. If the ratio is much
  887.                       greater than 1.0, you should check the
  888.                       disassembled source to determine the reasons
  889.                       for this inefficiency.  Clicking the
  890.                       Disassembled Source button in the Performance
  891.                       Analyzer displays the disassembled code in a
  892.                       Source View window with a special three-part
  893.                       annotation. A yellow bar spanning the top of
  894.                       three columns in this annotation indicates
  895.                       the first instruction in each basic block.
  896.                       The first column labelled _C_l_o_c_k in the
  897.                       annotation displays the clock number in which
  898.                       the instruction issues relative to the start
  899.                       of a basic block. If you see clock numbers
  900.                       replaced by ditto marks ("), it means that
  901.                       multiple instructions were issued in the same
  902.                       cycle. The second column is labelled _S_t_a_l_l
  903.                       and shows how many clocks elapsed during the
  904.                       stall before the instruction was issued. The
  905.                       third column labelled _W_h_y shows the reason
  906.                       for the stall. There are three possibilities:
  907.  
  908.                          +o B - branch delay
  909.  
  910.                          +o F - function unit delay
  911.  
  912.                          +o O - operand hasn't arrived yet
  913.  
  914.                - The Performance Analyzer also provides a new view,
  915.                  Malloc Error View, that lets you focus on _m_a_l_l_o_c
  916.                  errors without having to sort through legitimate
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.                                   - 15 -
  929.  
  930.  
  931.  
  932.                  _m_a_l_l_o_c operations.  Malloc Error View is available
  933.                  when you perform the "Find Memory Leaks" task. It
  934.                  takes the same form as Malloc View--the difference
  935.                  is that where Malloc View displays all _m_a_l_l_o_c_s in
  936.                  its list area (the upper pane), Malloc Error View
  937.                  displays only _m_a_l_l_o_c_s or _f_r_e_e_s that caused errors,
  938.                  identifying the cause of the problem and how many
  939.                  times it occurred. Malloc Error View replaces some
  940.                  of the functionality of Heap View.
  941.  
  942.                  When you run a "Find Memory Leaks" experiment and
  943.                  the Performance Analyzer detects a _m_a_l_l_o_c error, a
  944.                  dialog box will display recommending that you use
  945.                  Malloc Error View to analyze the results.
  946.  
  947.                - The "Find Memory Leaks Task" task has four
  948.                  associated performance metrics available. The leak
  949.                  counts were previously on by default--the malloc
  950.                  counts are now turned on as well. The metrics are:
  951.  
  952.                     - Inclusive Bytes Leaked - the number of bytes
  953.                       leaked from this function (including any
  954.                       called functions). This metric can be turned
  955.                       on for arcs as well as functions.
  956.  
  957.                     - Exclusive Bytes Leaked - the number of bytes
  958.                       leaked from this function (excluding any
  959.                       called functions).
  960.  
  961.                     - Inclusive Bytes malloc'ed - the number of
  962.                       bytes _m_a_l_l_o_c'_e_d from this function (including
  963.                       any called functions). This metric can be
  964.                       turned on for arcs as well as functions.
  965.  
  966.                     - Exclusive Bytes malloc'ed - the number of
  967.                       bytes _m_a_l_l_o_c'_e_d from this function (excluding
  968.                       any called functions).
  969.  
  970.                - There is a new task called "Get PC Sampling
  971.                  Times". It has no new functionality.  It simply
  972.                  lets you perform statistical profiling with fine
  973.                  grained usage sampling at 1-second intervals
  974.                  without capturing any other performance data.  It
  975.                  works on 32- and 64-bit processes and under IRIX
  976.                  6.2.
  977.  
  978.                - The "Determine bottlenecks, identify phases" task
  979.                  and the "Get Total Time per function & source
  980.                  line" task both capture Call Stack Profiling data
  981.                  every 100 msec. by default.
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.                                   - 16 -
  995.  
  996.  
  997.  
  998.                - I/O tracing has been incorporated into Syscall
  999.                  Tracing. When you perform Syscall tracing
  1000.                  experiments, you can now get _r_e_a_d and _w_r_i_t_e counts
  1001.                  and can display I/O View.
  1002.  
  1003.                - If you prefer to sort by exclusive rather than
  1004.                  inclusive data by default, you need to set
  1005.                  _c_v_p_e_r_f*_e_m_p_h_a_s_i_z_e_E_x_c_l_u_s_i_v_e to TRUE in your
  1006.                  ._X_d_e_f_a_u_l_t_s file.
  1007.  
  1008.                - The following environment variables are available
  1009.                  for "Find Memory Leaks" experiments:
  1010.  
  1011.                     - _M_A_L_L_O_C__V_E_R_B_O_S_E
  1012.  
  1013.                     - _M_A_L_L_O_C__T_R_A_C_I_N_G
  1014.  
  1015.                     - _M_A_L_L_O_C__F_A_S_T_C_H_K
  1016.  
  1017.                     - _M_A_L_L_O_C__M_A_X_M_A_L_L_O_C
  1018.  
  1019.                     - _M_A_L_L_O_C__N_O__R_E_U_S_E
  1020.  
  1021.                     - _M_A_L_L_O_C__C_L_E_A_R__F_R_E_E
  1022.  
  1023.                     - _M_A_L_L_O_C__C_L_E_A_R__F_R_E_E__P_A_T_T_E_R_N
  1024.  
  1025.                     - _M_A_L_L_O_C__C_L_E_A_R__M_A_L_L_O_C
  1026.  
  1027.                     - _M_A_L_L_O_C__C_L_E_A_R__M_A_L_L_O_C__P_A_T_T_E_R_N
  1028.  
  1029.                       These are described in detail in the
  1030.                       reference (man) page for _m_a_l_l_o_c__c_v.
  1031.  
  1032.  
  1033.        3.2.5  _C_h_a_n_g_e_s__i_n__t_h_e__T_e_s_t_e_r
  1034.  
  1035.           +o _C_v_c_o_v now includes a command, _o_p_t_i_m_i_z_e, that will
  1036.             analyze a set of tests and choose the minimum set of
  1037.             tests that will either have the same coverage or meet
  1038.             user's coverage criteria.
  1039.  
  1040.           +o Two options, ----ccccoooommmmpppprrrreeeessssssss and ----bbbbiiiittttccccoooouuuunnnntttt, have been added
  1041.             in _c_v_c_o_v's _r_u_n_t_e_s_t command. Option ----ccccoooommmmpppprrrreeeessssssss saves
  1042.             experiment database in compressed format while
  1043.             ----bbbbiiiittttccccoooouuuunnnntttt transforms count file into 1-bit-per-count
  1044.             format.
  1045.  
  1046.           +o An option, ----aaaaddddddddrrrr, has been added in _c_v_c_o_v's _l_s_b_l_o_c_k and
  1047.             _l_s_b_r_a_n_c_h commands to show blocks and branches by PC
  1048.             addresses instead of souce line numbers as default.
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.                                   - 17 -
  1061.  
  1062.  
  1063.  
  1064.        3.3  _I_n_t_e_g_r_a_t_i_o_n__w_i_t_h__o_t_h_e_r__T_o_o_l_s
  1065.  
  1066.        WorkShop includes facilities for integrating with other
  1067.        tools.  The WorkShop tools can be started from other
  1068.        WorkShop tools by using the "Launch Tool" sub-menu under the
  1069.        "Admin" menu.  You can add entries to the "Launch Tool" menu
  1070.        by adding lines to the file
  1071.        /_u_s_r/_l_i_b/_C_a_s_e_V_i_s_i_o_n/_s_y_s_t_e_m._l_a_u_n_c_h.  The format of the
  1072.        entries in this file is the menu entry, followed by a comma,
  1073.        followed by the command line that should be run to start the
  1074.        tool.
  1075.  
  1076.        3.3.1  _I_n_t_e_g_r_a_t_i_o_n__w_i_t_h__C_a_d_r_e__t_e_a_m_wwww_oooo_rrrr_kkkk  The WorkShop "Launch
  1077.        Tool" menus can be combined with team_w_o_r_k's User Menus to
  1078.        provide a tight coupling between the WorkShop tools and
  1079.        Cadre team_w_o_r_k tools.
  1080.  
  1081.        3.3.2  _S_t_a_r_t_i_n_g__t_e_a_m_wwww_oooo_rrrr_kkkk__f_r_o_m__W_o_r_k_S_h_o_p  Adding the following
  1082.        line to the file /_u_s_r/_l_i_b/_C_a_s_e_V_i_s_i_o_n/_s_y_s_t_e_m._l_a_u_n_c_h
  1083.  
  1084.        TTTTeeeeaaaammmmwwwwoooorrrrkkkk,,,, ////ccccaaaaddddrrrreeee////ttttssssaaaa////ccccoooommmm////tttteeeeaaaammmmwwwwoooorrrrkkkk
  1085.  
  1086.        will provide an entry labeled "Teamwork" in the "Launch
  1087.        Tool" sub-menu of the "Admin" menu of the WorkShop tools.
  1088.        Selecting this menu entry will start up team_w_o_r_k.
  1089.  
  1090.        3.3.3  _S_t_a_r_t_i_n_g__W_o_r_k_S_h_o_p__t_o_o_l_s__f_r_o_m__t_e_a_m_wwww_oooo_rrrr_kkkk  Here is a
  1091.        sample team_w_o_r_k User Menu file for the WorkShop tools:
  1092.  
  1093.  
  1094.        #### WWWWoooorrrrkkkkSSSShhhhoooopppp UUUUsssseeeerrrr MMMMeeeennnnuuuu DDDDeeeeffffiiiinnnniiiittttiiiioooonnnnssss
  1095.  
  1096.        ((((MMMMeeeennnnuuuu
  1097.            ((((NNNNaaaammmmeeee """"WWWWoooorrrrkkkkSSSShhhhoooopppp""""))))
  1098.            ((((MMMMeeeennnnuuuuIIIItttteeeemmmm
  1099.                ((((NNNNaaaammmmeeee """"DDDDeeeebbbbuuuuggggggggeeeerrrr""""))))
  1100.                ((((AAAAccccttttiiiioooonnnn ((((SSSSyyyyssssCCCCaaaallllllll """"////uuuussssrrrr////ssssbbbbiiiinnnn////ccccvvvvdddd""""))))))))
  1101.            ))))
  1102.            ((((MMMMeeeennnnuuuuIIIItttteeeemmmm
  1103.                ((((NNNNaaaammmmeeee """"BBBBuuuuiiiilllldddd AAAAnnnnaaaallllyyyyzzzzeeeerrrr""""))))
  1104.                ((((AAAAccccttttiiiioooonnnn ((((SSSSyyyyssssCCCCaaaallllllll """"////uuuussssrrrr////ssssbbbbiiiinnnn////ccccvvvvbbbbuuuuiiiilllldddd""""))))))))
  1105.            ))))
  1106.            ((((MMMMeeeennnnuuuuIIIItttteeeemmmm
  1107.                ((((NNNNaaaammmmeeee """"PPPPaaaarrrraaaalllllllleeeellll AAAAnnnnaaaallllyyyyzzzzeeeerrrr""""))))
  1108.                ((((AAAAccccttttiiiioooonnnn ((((SSSSyyyyssssCCCCaaaallllllll """"////uuuussssrrrr////ssssbbbbiiiinnnn////ccccvvvvppppaaaavvvv""""))))))))
  1109.            ))))
  1110.            ((((MMMMeeeennnnuuuuIIIItttteeeemmmm
  1111.                ((((NNNNaaaammmmeeee """"PPPPeeeerrrrffffoooorrrrmmmmaaaannnncccceeee AAAAnnnnaaaallllyyyyzzzzeeeerrrr""""))))
  1112.                ((((AAAAccccttttiiiioooonnnn ((((SSSSyyyyssssCCCCaaaallllllll """"////uuuussssrrrr////ssssbbbbiiiinnnn////ccccvvvvppppeeeerrrrffff""""))))))))
  1113.            ))))
  1114.            ((((MMMMeeeennnnuuuuIIIItttteeeemmmm
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.                                   - 18 -
  1127.  
  1128.  
  1129.  
  1130.                ((((NNNNaaaammmmeeee """"SSSSttttaaaattttiiiicccc AAAAnnnnaaaallllyyyyzzzzeeeerrrr""""))))
  1131.                ((((AAAAccccttttiiiioooonnnn ((((SSSSyyyyssssCCCCaaaallllllll """"////uuuussssrrrr////ssssbbbbiiiinnnn////ccccvvvvssssttttaaaattttiiiicccc""""))))))))
  1132.            ))))
  1133.        ))))
  1134.  
  1135.        By including these definitions in a user menu file, you will
  1136.        be able to start up any of the WorkShop tools directly from
  1137.        the team_w_o_r_k tools.
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.